package cn.tedu.collections;

import java.util.*;

/**
 * Date：2021年11月
 * Author：程Sir
 * Name： JavaSE-API
 * Content:
 *         static T max(Collection<? extends T> coll)  根据元素的自然顺序，返回给定 collection 的最大元素。
 *         static T min(Collection<? extends T> coll) 根据元素的自然顺序 返回给定 collection 的最小元素。
 *
 *         static void fill(List<? super T> list, T obj) 使用指定元素替换指定列表中的所有元素。
 *         static boolean replaceAll(List<T> list, T oldVal, T newVal)  使用另一个值替换列表中出现的所有某一指定值。
 *         static <T> void copy(List<? super T> dest, List<? extends T> src) 将所有元素从一个列表复制到另一个列表。
 *         static <T> boolean addAll(Collection<? super T> c, T... elements) 将所有指定元素添加到指定 collection 中。
 *
 *         static void reverse(List<?> list) 反转指定列表中元素的顺序。
 *         static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换。
 *         static void shuffle(List<?> list, Random rnd) 使用指定的随机源对指定列表进行置换。
 *
 *         static void sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序。
 *         static void sort(List<T> list, Comparator<? super T> c) 根据指定比较器产生的顺序对指定列表进行排序。
 *         static void swap(List<?> list, int i, int j) 在指定列表的指定位置处交换元素。
 */
public class CollectionsDemo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        // 给集合添加元素的传统方式
        /*Random random = new Random();
        for (int i = 0; i < 10; i++) {
            list.add(random.nextInt(100));
        }
        System.out.println(list);*/

        // 给集合添加元素的新型方式
        Collections.addAll(list, 1,3,5,7,9,10);
        System.out.println(list);
        // 将集合的元素反转输出【倒序输出】
        Collections.reverse(list);
        System.out.println("================");
        System.out.println(list);

        // 将集合中的元素进行调换
        Collections.swap(list,0, 5);
        System.out.println("================");
        System.out.println(list);

        // 将集合元素顺序打乱输出
        Collections.shuffle(list);
        System.out.println("================");
        System.out.println(list);

        // 查找集合中的最大值
        int max =Collections.max(list);
        System.out.println("================");
        System.out.println(max);
        // 查找集合中的最小值
        int min = Collections.min(list);
        System.out.println("================");
        System.out.println(min);

        // 使用默认的排序方法sort进行集合元素的排序：自然排序 小-大
        Collections.sort(list);
        System.out.println("================");
        System.out.println(list);

        List<Integer> list1 = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 3; i++) {
            list1.add(random.nextInt(100));
        }
        // 将指定的集合中所有元素复制到指定集合中,注意区分addAll的使用
        Collections.copy(list, list1);
        System.out.println("================");
        System.out.println(list1);
        System.out.println(list);

        // 使用指定的元素替换集合中已有的元素
        Collections.replaceAll(list,7,0);
        System.out.println("================");
        System.out.println(list);

        // 使用指定的值去替换集合中所有的元素
        Collections.fill(list,100);
        System.out.println("================");
        System.out.println(list);

    }

}
